<?php
header('Content-Type: application/json');
require_once __DIR__ . '/../classes/KeywordManager.php';
require_once __DIR__ . '/../classes/HtmlParser.php';
require_once __DIR__ . '/../classes/Logger.php';

// 加载配置文件
$config = require __DIR__ . '/../config/config.php';

$logger = new Logger($config);
$logger->info('=== API: 切换到下一个关键词 ===');

try {
    $keywordManager = new KeywordManager($config);
    $htmlParser = new HtmlParser($config);
    
    // 获取下一个关键词
    $logger->info('开始获取下一个关键词');
    $nextKeyword = $keywordManager->getRandomUnreadKeyword();
    
    if (!$nextKeyword) {
        $logger->warning('没有未读关键词，重置所有关键词');
        // 如果没有未读关键词，重置所有关键词
        $keywordManager->resetAllKeywords();
        $nextKeyword = $keywordManager->getRandomUnreadKeyword();
    }
    
    if ($nextKeyword) {
        $logger->info('成功获取关键词', ['keyword' => $nextKeyword]);
        
        $searchUrl = "https://wm.m.sm.cn/s?from=" . $config['search_source'] . "&q=" . urlencode($nextKeyword);
        
        // 一次请求，两个用途：1. 解析关联关键词  2. 显示给iframe
        $logger->info('开始请求神马搜索（用于解析和显示）');
        $searchHtml = null;
        $iframeUrl = $searchUrl; // 默认使用原URL作为降级方案
        $relatedKeywords = [];
        
        try {
            // 获取HTML内容
            $searchHtml = $htmlParser->fetchHtml($searchUrl);
            
            if ($searchHtml) {
                $logger->info('成功获取搜索结果HTML', ['length' => strlen($searchHtml)]);
                
                // 解析关联关键词
                $relatedKeywords = $htmlParser->parseKeywords($searchHtml);
                
                // 保存关联关键词
                if (!empty($relatedKeywords)) {
                    $logger->info('开始保存关联关键词', ['count' => count($relatedKeywords)]);
                    $keywordManager->insertRelatedKeywords($relatedKeywords);
                    $logger->info('关联关键词保存成功');
                } else {
                    $logger->warning('没有找到关联关键词');
                }
                
                // 将HTML保存到临时文件供iframe使用
                $tempDir = __DIR__ . '/../temp';
                if (!is_dir($tempDir)) {
                    mkdir($tempDir, 0755, true);
                }
                
                $tempFile = $tempDir . '/search_result_' . md5($nextKeyword) . '.html';
                if (file_put_contents($tempFile, $searchHtml) !== false) {
                    $iframeUrl = 'temp/search_result_' . md5($nextKeyword) . '.html';
                    $logger->info('HTML已保存到临时文件', ['file' => $tempFile]);
                } else {
                    $logger->warning('保存HTML到临时文件失败，iframe将直接使用原URL');
                }
            } else {
                $logger->error('获取搜索结果HTML失败，iframe将直接使用原URL');
            }
        } catch (Exception $e) {
            $logger->error('处理搜索结果失败', ['error' => $e->getMessage()]);
        }
        
        echo json_encode([
            'success' => true,
            'keyword' => $nextKeyword,
            'searchUrl' => $iframeUrl,
            'relatedKeywordsCount' => count($relatedKeywords)
        ], JSON_UNESCAPED_UNICODE);
        
        $logger->info('=== API: 获取下一个关键词完成 ===');
    } else {
        $logger->error('没有可用的关键词');
        echo json_encode([
            'success' => false,
            'message' => '没有可用的关键词'
        ], JSON_UNESCAPED_UNICODE);
    }
    
} catch (Exception $e) {
    $logger->error('API异常', ['error' => $e->getMessage()]);
    echo json_encode([
        'success' => false,
        'message' => $e->getMessage()
    ], JSON_UNESCAPED_UNICODE);
}
